/**
 * Created by Yu Jin Xian on 2016/8/29.
 */
exports.book = {
    '书名': 'JavaScript 高级程序设计（第三版）',
    '扉页': ['版权声明', '序', '前言'],
    '目录': [
        {
            '第1章': 'JavaScript 简介',
            '1.1': 'JavaScript 简史',
            '1.2': 'JavaScript 实现',
            '1.2.1': [
                'ECMAScript',
                { '1': 'ECMAScript 的版本' },
                { '2': '什么是 ECMAScript 兼容' }
            ],
            '1.2.2': [
                '文档对象模型（DOM）',
                { '1': '为什么要使用 DOM' },
                { '2': 'DOM 级别' },
                { '3': '其他 DOM 标准' },
                { '4': 'Web 浏览器对 DOM 的支持' }
            ],
            '1.2.3': '浏览器对象模型（BOM）',
            '1.3': 'JavaScript 版本',
            '1.4': '小结'
        },
        {
            '第2章': '在 HTML 中使用 JavaScript',
            '2.1': '\<script\> 元素',
            '2.1.1': '脚本的位置',
            '2.1.2': '延迟脚本',
            '2.1.3': '异步脚本',
            '2.1.4': '在 XHTML 中的用法',
            '2.1.5': '不推荐使用的语法',
            '2.2': '嵌入代码与外部文件',
            '2.3': '文档模式',
            '2.4': '\<noscript\> 元素',
            '2.5': '小结'
        },
        {
            '第3章': '基本概念',
            '3.1': '语法',
            '3.1.1': '区分大小写',
            '3.1.2': '标识符',
            '3.1.3': '注释',
            '3.1.4': '严格模式',
            '3.1.5': '语句',
            '3.2': '关键字和保留字',
            '3.3': '变量',
            '3.4': '数据类型',
            '3.4.1': 'typeof 操作符',
            '3.4.2': 'Undefined 类型',
            '3.4.3': 'Null 类型',
            '3.4.4': 'Boolean 类型',
            '3.4.5': [
                'Number 类型',
                { '1': '浮点数值' },
                { '2': '数值范围' },
                { '3': 'NaN' },
                { '4': '数值转换' }
            ],
            '3.4.6': [
                'String 类型',
                { '1': '字符字面量' },
                { '2': '字符串的特点' },
                { '3': '转换为字符串' }
            ],
            '3.4.7': 'object 类型',
            '3.5': '操作符',
            '3.5.1': [
                '一元操作符',
                { '1': '递增和递减操作符' },
                { '2': '一元加和减操作符' }
            ],
            '3.5.2': [
                '位操作符',
                { '1': '按位非 (NOT)' },
                { '2': '按位与 (AND)' },
                { '3': '按位或 (OR)' },
                { '4': '按位异或 (XOR)' },
                { '5': '左移' },
                { '6': '有符号的右移' }
            ],
            '3.5.3': [
                '布尔操作符',
                { '1': '逻辑非' },
                { '2': '逻辑与' },
                { '3': '逻辑或' }
            ],
            '3.5.4': [
                '乘性操作符',
                { '1': '乘法' },
                { '2': '除法' },
                { '3': '求模' }
            ],
            '3.5.5': [
                '加性操作符',
                { '1': '加法' },
                { '2': '减法' }
            ],
            '3.5.6': '关系操作符',
            '3.5.7': [
                '相等操作符',
                { '1': '相等和不相等' },
                { '2': '全等和不全等' }
            ],
            '3.5.8': '条件操作符',
            '3.5.9': '赋值操作符',
            '3.6': '语句',
            '3.6.1': 'if 语句',
            '3.6.2': 'do-while 语句',
            '3.6.3': 'while 语句',
            '3.6.4': 'for 语句',
            '3.6.5': 'for-in 语句',
            '3.6.6': 'label 语句',
            '3.6.7': 'break 和 continue 语句',
            '3.6.8': 'with 语句',
            '3.6.9': 'switch 语句',
            '3.7': '函数',
            '3.7.1': '理解参数',
            '3.7.2': '没有重载',
            '3.8': '小结'
        },
        {
            '第4章': '变量、作用域和内存问题',
            '4.1': '基本类型和引用类型的值',
            '4.1.1': '动态的属性',
            '4.1.2': '复制变量值',
            '4.1.3': '传递参数',
            '4.1.4': '检测类型',
            '4.2': '执行环境及作用域',
            '4.2.1': '延长作用域链',
            '4.2.2': [
                '没有块级作用域',
                { '1': '声明变量' },
                { '2': '查询标识符' }
            ],
            '4.3': '垃圾收集',
            '4.3.1': '标记清除',
            '4.3.2': '引用计数',
            '4.3.3': '性能问题',
            '4.3.4': '管理内存',
            '4.4': '小结'
        },
        {
            '第5章': '引用类型',
            '5.1': 'Object 类型',
            '5.2': 'Array',
            '5.2.1': '检测数组',
            '5.2.2': '转换方法',
            '5.2.3': '栈方法',
            '5.2.4': '队列方法',
            '5.2.5': '重排序方法',
            '5.2.6': '操作方法',
            '5.2.7': '位置方法',
            '5.2.8': '迭代方法',
            '5.2.9': '归并方法',
            '5.3': 'Date 类型',
            '5.3.1': '继承方法',
            '5.3.2': '日期格式化方法',
            '5.3.3': '日期/时间组合方法',
            '5.4': 'RegExp 类型',
            '5.4.1': 'RegExp 实例属性',
            '5.4.2': 'RegExp 实例方法',
            '5.4.3': 'RegExp 构造函数属性',
            '5.4.4': '模式的局限性',
            '5.5': 'Function 类型',
            '5.5.1': '没有重载 (深入理解)',
            '5.5.2': '函数声明与函数表达式',
            '5.5.3': '作为值的函数',
            '5.5.4': '函数内部属性',
            '5.6': '基本包装类型',
            '5.6.1': 'Boolean 类型',
            '5.6.2': 'Number 类型',
            '5.6.3': [
                'String 类型',
                { '1': '字符方法' },
                { '2': '字符串操作方法' },
                { '3': '字符串位置方法' },
                { '4': 'trim() 方法' },
                { '5': '字符串大小写转换方法' },
                { '6': '字符串的模式匹配方法' },
                { '7': 'localeCompare() 方法' },
                { '8': 'fromCharCode() 方法' },
                { '9': 'HTML 方法' }
            ],
            '5.7': '单体内置对象',
            '5.7.1': [
                'Global 对象',
                { '1': 'URI 编码' },
                { '2': 'eval() 方法' },
                { '3': 'Global 对象的属性' },
                { '4': 'window 对象' }
            ],
            '5.7.2': [
                'Math 对象',
                { '1': 'Math 对象的属性' },
                { '2': 'min() 和 max() 方法' },
                { '3': '舍入方法' },
                { '4': 'random() 方法' },
                { '5': '其他方法' }
            ],
            '5.8': '小结'
        },
        {
            '第6章': '面向对象的程序设计',
            '6.1': '理解对象',
            '6.1.1': [
                '属性类型',
                { '1': '数据属性' },
                { '2': '访问器属性' }
            ],
            '6.1.2': '定义多个属性',
            '6.1.3': '读取属性的特性',
            '6.2': '创建对象',
            '6.2.1': '工厂模式',
            '6.2.2': [
                '构造函数模式',
                { '1': '将构造函数当作函数' },
                { '2': '构造函数的问题' }
            ],
            '6.2.3': [
                '原型模式',
                { '1': '理解原型对象' },
                { '2': '原型与 in 操作符' },
                { '3': '更简单的原型语法' },
                { '4': '原型的动态性' },
                { '5': '原生对象的原型' },
                { '6': '原型对象的问题' }
            ],
            '6.2.4': '组合使用构造函数模式和原型模式',
            '6.2.5': '动态原型模式',
            '6.2.6': '寄生构造函数模式',
            '6.2.7': '稳妥构造函数模式',
            '6.3': '继承',
            '6.3.1': [
                '原型链',
                { '1': '别忘记默认的原型' },
                { '2': '确定原型和实例的关系' },
                { '3': '谨慎地定义方法' },
                { '4': '原型链的问题' }
            ],
            '6.3.2': [
                '借用构造函数',
                { '1': '传递参数' },
                { '2': '借用构造函数的问题' }
            ],
            '6.3.3': '组合继承',
            '6.3.4': '原型式继承',
            '6.3.5': '寄生式继承',
            '6.3.6': '寄生组合式继承',
            '6.4': ['小结',
                { '1': '' },
                { '2': '原型与 in 操作符' }
            ]
        },
        { '第7章': '函数表达式' },
        { '第8章': 'BOM' },
        { '第9章': '客户端检测' },
        { '第10章': 'DOM' },
        { '第11章': 'DOM 扩展' },
        { '第12章': 'DOM2 和 DOM3' },
        { '第13章': '事件' },
        { '第14章': '表单脚本' },
        { '第15章': '使用 Canvas 绘图' },
        { '第16章': 'HTML5 脚本编程' },
        { '第17章': '错误处理与调试' },
        { '第18章': 'JavaScript 与 XML' },
        { '第19章': 'E4X' },
        { '第20章': 'JSON' },
        { '第21章': 'Ajax 与 Comet' },
        { '第22章': '高级技巧' },
        { '第23章': '离线应用与客户端存储' },
        { '第24章': '最佳实践' },
        { '第25章': '新兴的 API' }
    ],
    '附录': [
        { 'A': 'ECMAScript Harmony' },
        { 'B': '严格模式' },
        { 'C': 'JavaScript 库' },
        { 'D': 'JavaScript 工具' }
    ]
};
